﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConverterCore
{
    /// <summary>
    /// 基于字典的用于表示KeyValue的集合，使用唯一Key对值进行访问。
    /// </summary>
    public class KeyValueCollection
    {
        // 用于存储所有的键和值。
        Dictionary<string, KeyValue> kvs = new Dictionary<string, KeyValue>();

        /// <summary>
        /// 向集合中添加数据。如果key已经存在，则根据updateIfExisted判断是否要更新。
        /// </summary>
        /// <param name="key">键。</param>
        /// <param name="kv">KeyValue对象。</param>
        /// <param name="updateIfExisted">如果数据存在是否要更新。</param>
        public void Add(string key, string value, bool updateIfExisted=false)
        {
            KeyValue kv = new KeyValue(key, value);
            if (!kvs.ContainsKey(key))
                kvs.Add(key, kv);
            else if (updateIfExisted)
                kvs[key] = kv;
        }

        /// <summary>
        /// 使用Key访问集合中的元素，如果不存在则返回null。
        /// </summary>
        /// <param name="key">键。</param>
        /// <returns></returns>
        public KeyValue this[string key]
        {
            get => kvs[key];
        }
    }
}
